package com.cn.bulu.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import com.alibaba.fastjson.JSONArray;
import com.cn.bulu.pojo.Cost_rules;
import com.cn.bulu.pojo.Customer_address;
import com.cn.bulu.pojo.Evaluation;
import com.cn.bulu.pojo.Goods;
import com.cn.bulu.pojo.Goods_special;
import com.cn.bulu.pojo.Indent;
import com.cn.bulu.pojo.Merchants;
import com.cn.bulu.pojo.MoneyRecord;
import com.cn.bulu.pojo.Territory;

@Transactional
public interface MerchantsDao {
	String getAreaNameByCode(Integer province);

	Integer addNewCustomer_address(Customer_address customer_address);

	Integer addNewIndentOfRepair(Indent indent);

	Integer addNewIndentOfMeasure(Indent indent);

	Territory getTerritoryByProAndCity(Map<String, Object> map);

	// 根据市名称查询相关费用
	Map<String, Object> selectCPriceByCity(@Param("city")String city,@Param("type")Integer type);

	// 根据市查询测量费用
	Map<String, Object> selectCPrice(String city);

	// 存商品到goods表中
	int insertGoods(Goods goods);

	// 存配件
	int insertpeijian(Goods pei);

	// 存特殊
	int insertSpecial(Goods_special special);
	
	//查询accId
	int selectAccId(String accessoriesTypeContent);

	// 插入图片
	int insertImg(Map<String, Object> imgmap);

	List<Integer> selectGanlei(Integer goodsId);

	//根据商品号查询该商品所属订单的indentId
	Integer selectIndentIdByGoodsId(Integer goodsId);
	
	// 根据商品号查询米数
	Map<String, Object> selectSaleNumber(Integer integer);

	// 根据市查询安装费用
	Cost_rules selectAPrice(Map<String, Object> bupeijian);

	// 插入安装订单
	int insertAnzhuangIndent(Indent indent);

	// 插入安装订单和商品的关系
	int insertindentGoods(Map<String, Object> send);

	// 修改安装订单的价格
	int updateAIndent(Map<String, Object> xiugai);

	// 根据id查询帘头的图片
	String selectShadeHeadImg(Integer integer);

	// 查询广告
	List<String> selectGuanggao();

	// 根据市查询维修单每单提取多少钱selectTerritoryIdByCity
	Double selectDanti(String shi);
	
	// 根据市查询其territory
	int selectTerritoryIdByCity(String city);

	// 注册
	int insertMerchants(Merchants merchants);

	// 检查手机号是否已注册
	Integer selectPhone(String phone);

	// 修改密码
	int updatePassword(Map<String, Object> map);

	// 查询密码是否错误
	Map<String, Object> selectMerchants(Map<String, Object> map);

	// 根据前端发送的状态查询进行中
	List<Map<String, Object>> selectOngoing(Map<String, Object> map);

	// 根据前端发送的状态查询已完成
	List<Map<String, Object>> selectComplete(Map<String, Object> map);

	// 根据商品获取布配件
	List<Map<String, Object>> selectBupeijian(Integer goodsId);

	// 查询帘头配件
	List<Map<String, Object>> selectToupeijian(@Param("goodsId")Integer goodsId,@Param("goodsIdChild")Integer goodsIdChild,@Param("type")Integer type);

	// 根据商品id获取纱配件
	List<Map<String, Object>> selectShapeijian(Integer goodsId);

	// 根据id查询测量日记
	List<Map<String, Object>> selectRiji(Map<String, Object> map);

	// 根据手机号查询头像
	String selectHeadImg(String phone);

	// 查询安装费工人版
	Cost_rules selectAPriceGR(Map<String, Object> bupeijian);

	// 根据商家号查询提现明细
	List<Map<String, Object>> selectMingxi(Map<String, Object> map);

	// 查询测量费 工人
	// Map<String, Object> selectCPriceGR(Integer territoryId);

	// 查询鹿客安心宝价格    重复方法，暂时注释  
	//	Double selectRelieved();
	
	// 根据订单号查询订单的一些内容
	Map<String, Object> selectIndent(Integer indentId);

	// 查询一些文字备注
	Map<String, Object> selectPeifu(Integer type);

	// 根据市获取电机价格
	Double selectDianjiPrice(String city);

	// 根据市获得维修费用和维修备注
	Map<String, Object> selectWeixiu(Integer territoryId);

	// 查询工人接单后取消应扣百分比
	Map<String, Double> selectBaifenbi(Integer territoryId);

	// 根据订单号查询订单金额
	Map<String, Double> selectMerchantsPrice(Integer indentId);
	
	// 根据订单号查询是否需要取货
	int selectIsNeedTakeGoods(Integer indentId);

	// 根据订单id查询状态
	Integer selectStatus(Integer indentId);

	// 修改钱包
	int updateWallet(Map<String, Object> map);

	// 修改订单状态
	int updateIndentStatus(Integer indentId);

	// 查询安心宝价格
	Double selectAnxinbao(String city);

	// 根据订单号查询工人id
	Integer selectWorker(Integer indentId);

	// 添加对工人的评价
	int insertEvaluation(Evaluation evaluation);

	// 存评价图片
	int insertTupian(Map<String, Object> map);

	// 修改订单
	int updateStatus(Integer indentId);

	// 删除商品
	int deleteGoods(Integer indentId);

	// 获得订单对应的goodsid
	List<Integer> selectGoodsId(Integer indentId);

	// 删除商品
	int deleteGoodsId(Integer goodsId);

	// 删除订单跟商品的关系
	int deleteGuangxi(Integer indentId);

	// 查询个人信息
	Merchants selectGeren(Integer merchantsId);

	// 修改头像
	int updateHeadImg(Map<String, Object> map);

	// 修改信息
	int updateMerchants(Merchants merchants);

	// 根据订单号查询商品
	List<Map<String, Object>> selectGoods(Integer indentId);

	// 查询订单中已填写的商品数量
	Integer selectTianxie(Integer integer);

	// 查询地址
	List<Map<String, Object>> selectAddress(Integer merchantsId);

	// 添加地址
	int insertAddress(Customer_address address);

	// 删除地址
	int deleteAddress(Integer cuAdId);

	// 修改地址
	int updateAddress(Customer_address address);
	
	// 修改地址
	int updateTakeGoodsAddress(Map<String, Object> map);

	// 查询默认
	Integer selectDefault(Integer merchantsId);

	// 修改地址状态
	int updateDefault(Map<String, Object> map);

	// 查询钱包
	Map<String, Object> selectWallet(Integer merchantsId);

	// 查询消息中心
	List<Map<String, Object>> selectMessage(Integer page);

	// 根据ID查询密码
	Map<String, Object> selectPassword(Integer merchantsId);

	// 修改手机号
	int updatePhone(Map<String, Object> map);

	// 修改订单地址
	int updateIndentAddress(Map<String, Object> map);

	// 根据商品号查询有几个商品
	Integer selectGoodsNum(Integer indentId);

	// 查询成品帘工人价格
	Double selectChengpinPriceGR(String shi);

	// 查询成品帘商家价格
	Double selectChengpinPriceSJ(String shi);

	// 根据订单号查询
	Integer selectIndentType(Integer indentId);

	// 根据订单号查询所有商品
	List<Goods> selectAllGoods(@Param("indentId")Integer indentId,@Param("isDeleted")Integer isDeleted);

	// 修改订单价格
	int updateindentPrice(Map<String, Object> charu);

	// 删除商品和订单的关系
	int deleteGoodsIndent(Integer goodsId);

	// 查询加价价格
	Double selectPremium();

	// 根据订单号查询地址
	Map<String, Object> selectCity(Integer indentId);

	// 根据商品号查询商品信息
	Goods selectGoodxinxi(Integer integer);

	// 修改商品状态已经下过安装订单
	int updateGoodsInstall(Integer integer);

	// 把默认银行卡改为不是默认
	int updateBankCardM(Integer merchantsId);

	// 添加银行卡直接为默认
	int insertBankCard(Map<String, Object> map);

	// 查询所有银行卡
	List<Map<String, Object>> selectBankCard(Integer merchantsId);

	// 更改默认
	int updateBankCard(Integer bankCardId);

	// 删除银行卡
	int deleteBankCard(Integer bankCardId);

	// 查询默认银行卡
	Map<String, Object> selectDefultBank(Integer merchantsId);

	// 查询版权信息
	String selectCopyright();

	// 查询说明
	String selectAboutMe();

	// 查询软件使用许可协议
	String selectVersionIntroduce();

	// 查询平台服务协议
	String selectAgreement();

	// 修改订单价格
	int updateIndent(Map<String, Object> send);

	// 根据市查询工人电机价格
	Double selectDianjiPriceGR(String city);

	// 修改订单价钱安装专用
	int updateIndentAZ(Map<String, Object> send);

	// 修改订单状态
	int updateIndentStatusYes(Integer indentId);

	// 修改加价悬赏
	int updateAddPrice(Map<String, Object> send);

	// 修改加价悬赏和安心宝
	int updateAddPrice2(Map<String, Object> send);

	// 修改钱包金额
	int updateWalletD(Map<String, Object> send);

	// 查询密码和钱包
	Map<String, Object> selectMerchantsWallet(Integer merchantsId);

	// 获取拼密码的盐
	String selectWeiyi(String phone);

	// 查询银行卡数量
	Integer selectYinhangka(Integer merchantsId);

	// 查询微信
	Integer selectWeixin(Integer merchantsId);

	// 查询支付宝
	Integer selectZhifubao(Integer merchantsId);

	// 根据订单号查询城市
	String selectIndentCity(Integer indentId);

	// 根据订单号查询城市territoryId,
	int selectIndentCityTerritoryId(Integer indentId);

	// 根据订单号查询商品
	List<Goods> selectGoodsPojo(Integer indentId);

	// 根据银行卡id查询银行卡
	Map<String, Object> selectBankCardOne(Integer bankCardId);

	// 插入提现记录
	int insertMoneyRecord(MoneyRecord moneyRecord);

	// 查询补差价
	List<Map<String, Object>> selectDifference(Integer merchantsId);

	// 修改状态为已支付
	int updateDifferenceIspay(Integer differenceId);

	// 根据市获取璧钩价格
	Double selectBigouPrice(String city);

	// 根据市获取四爪钩价格
	Double selectSiZhuaGouPrice(String city);

	// 修改商品风格
	int updateGoodsStyle(Map<String, Object> map);

	// 根据特殊id修改安装配件
	int updateSpecial(Map<String, Object> peijian);

	// 根据市查询出工人璧钩价钱
	Double selectBigouPriceGR(String city);

	// 根据市查询出工人四爪钩价钱
	Double selectSiZhuaGouPriceGR(String city);

	// 根据商品id查询成品帘测量图片
	List<String> selectChengpinImgs(Integer integer);

	// 根据商品号修改安装费
	void updateGoodsInstallPrice(Map<String, Object> installPrice);

	// 根据城市和区域名称查询区域
	String selectAreaCode(Map<String, String> cityArea);

	// 根据区域code查询该区域是否开通
	List<String> theAreaIsDredge(String workerSpaceCode);

	// 查询鹿客帮下单版规则
	Map<String, String> selectMercantsRules(@Param("queryType") Integer queryType);

	Merchants selectMerchantsByPhoneAndPassword(Map<String, Object> map);

	int updateImeiByMerchantsId(Map<String, Object> param);
	
	//根据id查找唯一商家
	Merchants selectMerchantsOneById(Integer merchantsId);
	
	//根据id查找商家imei
	String getImeiByMerchantsId(int merchantsId);
	

	//根据goodsId查找该goods对应的成品帘的一些配件
	List<Map<String, Object>> selectFinishSpecial(Integer goodsId);
	

	//获取对应goodsId的所有成品帘数据
	List<Map<String, Object>> selectFinishedCurtains(Integer goodsId);

	int updateWalletSub(Map<String, Object> map3);

	Double selectTakeGoodsCost(String city);
	/*//拷贝数据库中值
	Integer copyGoodsByGoodsId(Goods goods);*/
	
	//将其变为未转化过安装订单
	int updateGoodsHasInstall(int goodsId);
	//安装订单删除商品和订单之间的关系
	int deleteGoodsAndIndent(@Param("goodsId")int goodsId, @Param("indentId")Integer indentId);
	
	//查找本次需要补差价的记录
	List<Map<String, Object>> selectDifferences(@Param("merchantsId")Integer merchantsId, @Param("idArray")JSONArray idArray);
	

}
